let bin = new St.Bin({ name: 'appMenu' });
this.actor.set_child(bin);
+
+ this.actor.reactive = false;
+ this._targetIsCurrent = false;
+
this._container = new Shell.GenericContainer();
bin.set_child(this._container);
this._container.connect('get-preferred-width', Lang.bind(this, this._getContentPreferredWidth));
lastStartedApp = this._startingApps[i];
let focusedApp = tracker.focus_app;
- let targetApp = focusedApp != null ? focusedApp : lastStartedApp;
- if (targetApp == this._targetApp) {
- if (targetApp && targetApp.get_state() != Shell.AppState.STARTING)
- this.stopAnimation();
- return;
- }
- this._stopAnimation();
if (!focusedApp) {
// If the app has just lost focus to the panel, pretend
return;
}
+ let targetApp = focusedApp != null ? focusedApp : lastStartedApp;
+
+ if (targetApp == null) {
+ if (!this._targetIsCurrent)
+ return;
+
+ this.actor.reactive = false;
+ this._targetIsCurrent = false;
+
+ Tweener.removeTweens(this.actor);
+ Tweener.addTween(this.actor, { opacity: 0,
+ time: Overview.ANIMATION_TIME,
+ transition: 'easeOutQuad' });
+ return;
+ }
+
+ if (!this._targetIsCurrent) {
+ this.actor.reactive = true;
+ this._targetIsCurrent = true;
+
+ Tweener.removeTweens(this.actor);
+ Tweener.addTween(this.actor, { opacity: 255,
+ time: Overview.ANIMATION_TIME,
+ transition: 'easeOutQuad' });
+ }
+
+ if (targetApp == this._targetApp) {
+ if (targetApp && targetApp.get_state() != Shell.AppState.STARTING)
+ this.stopAnimation();
+ return;
+ }
+ this._stopAnimation();
+
if (this._iconBox.child != null)
this._iconBox.child.destroy();
this._iconBox.hide();
this._label.setText('');
- this.actor.reactive = false;
this._targetApp = targetApp;
- if (targetApp != null) {
- let icon = targetApp.get_faded_icon(2 * PANEL_ICON_SIZE);
+ let icon = targetApp.get_faded_icon(2 * PANEL_ICON_SIZE);
- this._label.setText(targetApp.get_name());
- // TODO - _quit() doesn't really work on apps in state STARTING yet
- this._quitMenu.label.set_text(_("Quit %s").format(targetApp.get_name()));
+ this._label.setText(targetApp.get_name());
+ // TODO - _quit() doesn't really work on apps in state STARTING yet
+ this._quitMenu.label.set_text(_("Quit %s").format(targetApp.get_name()));
- this.actor.reactive = true;
- this._iconBox.set_child(icon);
- this._iconBox.show();
+ this._iconBox.set_child(icon);
+ this._iconBox.show();
- if (targetApp.get_state() == Shell.AppState.STARTING)
- this.startAnimation();
- }
+ if (targetApp.get_state() == Shell.AppState.STARTING)
+ this.startAnimation();
this.emit('changed');
}